#include <bits/stdc++.h>
using namespace std;
inline int read() {
	int x;
	scanf("%d",&x);
	return x;
}
int main() {
	int x=0+read(),k=0+read(),mAx[100000+5],mAx_[100000+5],mv[100000+5],sand[100000+5];
	mAx[0]=x,mAx_[0]=0,mv[0]=mAx_[0];
	for(int i=1; i<=k; i++) sand[i]=read();
	for(int i=1; i<=k; i++) {
		mAx[i]=i;mAx_[i]=mAx[i]+1+k-log2(x);
	}
	for(int i=1; i<=k; i++) {
		mAx[i]=mAx[i-1];
		mAx_[i]=mAx_[i-1];
		int tmp=sand[i]-sand[i-1];
		if(i%2!=0) {
			int mi=min(mAx[i],tmp-mv[i-1]); 
			mAx_[i]=max(mAx_[i],mi);
			mv[i]  =max(mAx_[i-1]+mv[i-1]-tmp,0)-mAx_[i];
		} else {
			int ma=max(mAx_[i],x-tmp-mv[i-1]);
			mAx[i]=min(mAx[i],ma);
			mv[i]=min(mAx[i-1]+mv[i-1]+tmp,x)-mAx[i];
		}
	}
	int q=read();
	while(q--) {
		int ans=0;
		int t=read(),a=read();
		int ques=upper_bound(sand+1,sand+k+1,t)-sand-1;
		a=(a<=mAx_[ques])?mAx_[ques]:(a>=mAx[ques]?mAx[ques]:a);
		// if(a<=mAx_[ques]) a=mAx_[ques];
		// else if(a>=mAx[ques]) a=mAx[ques];
		// else puts("\nNoop\n");
		// ans=a+mv[ques];
		// if(ques%2!=0) ans=min(x,ans+t-sand[ques]);
		// else ans=max(0,ans-t+sand[ques]);
		printf("%d\n",(ques%2!=0)?min(x,a+mv[ques]+t-sand[ques]):max(0,a+mv[ques]-t+sand[ques]));
		// printf("%d\n",ans);
	}
}